/****************************************************************************
 * boards/arm/stm32/stm32f411-minimum/src/stm32f411-minimum-gpio.h
 *
 * Licensed to the Apache Software Foundation (ASF) under one or more
 * contributor license agreements.  See the NOTICE file distributed with
 * this work for additional information regarding copyright ownership.  The
 * ASF licenses this file to you under the Apache License, Version 2.0 (the
 * "License"); you may not use this file except in compliance with the
 * License.  You may obtain a copy of the License at
 *
 *   http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
 * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.  See the
 * License for the specific language governing permissions and limitations
 * under the License.
 *
 ****************************************************************************/

#ifndef __BOARDS_ARM_STM32_STM32F411_MINIMUM_SRC_STM32F411_MINIMUM_GPIO_H
#define __BOARDS_ARM_STM32_STM32F411_MINIMUM_SRC_STM32F411_MINIMUM_GPIO_H

/* GPIO A0 Kconfig Mapping */

#if defined(CONFIG_STM32F411MINIMUM_GPIO_A0_OUT)
#  define GPIO_A0_USED_OUT 1
#  define GPIO_A0_USED_INT 0
#  define GPIO_A0_USED_IN 0
#elif defined(CONFIG_STM32F411MINIMUM_GPIO_A0_INT)
#  define GPIO_A0_USED_OUT 0
#  define GPIO_A0_USED_INT 1
#  define GPIO_A0_USED_IN 0
#elif defined(CONFIG_STM32F411MINIMUM_GPIO_A0_IN)
#  define GPIO_A0_USED_OUT 0
#  define GPIO_A0_USED_INT 0
#  define GPIO_A0_USED_IN 1
#else
#  define GPIO_A0_USED_OUT 0
#  define GPIO_A0_USED_INT 0
#  define GPIO_A0_USED_IN 0
#endif

#if defined(CONFIG_STM32F411MINIMUM_GPIO_A0_OUT_PP)
#  define GPIO_A0_OUTTYPE GPIO_PUSHPULL
#else
#  define GPIO_A0_OUTTYPE GPIO_OPENDRAIN
#endif

#if defined(CONFIG_STM32F411MINIMUM_GPIO_A0_OUT_CLEAR)
#  define GPIO_A0_OUT_DEFAULT GPIO_OUTPUT_CLEAR
#else
#  define GPIO_A0_OUT_DEFAULT GPIO_OUTPUT_SET
#endif

#if defined(CONFIG_STM32F411MINIMUM_GPIO_A0_PULL_DOWN)
#  define GPIO_A0_PULL GPIO_PULLDOWN
#elif defined(CONFIG_STM32F411MINIMUM_GPIO_A0_PULL_FLOAT)
#  define GPIO_A0_PULL GPIO_FLOAT
#else
#  define GPIO_A0_PULL GPIO_PULLUP
#endif

#if defined(CONFIG_STM32F411MINIMUM_GPIO_A0_SPEED_2MHz)
#  define GPIO_A0_SPEED GPIO_SPEED_2MHz
#elif defined(CONFIG_STM32F411MINIMUM_GPIO_A0_SPEED_25MHz)
#  define GPIO_A0_SPEED GPIO_SPEED_25MHz
#else
#  define GPIO_A0_SPEED GPIO_SPEED_50MHz
#endif

/* GPIO A1 Kconfig Mapping */

#if defined(CONFIG_STM32F411MINIMUM_GPIO_A1_OUT)
#  define GPIO_A1_USED_OUT 1
#  define GPIO_A1_USED_INT 0
#  define GPIO_A1_USED_IN 0
#elif defined(CONFIG_STM32F411MINIMUM_GPIO_A1_INT)
#  define GPIO_A1_USED_OUT 0
#  define GPIO_A1_USED_INT 1
#  define GPIO_A1_USED_IN 0
#elif defined(CONFIG_STM32F411MINIMUM_GPIO_A1_IN)
#  define GPIO_A1_USED_OUT 0
#  define GPIO_A1_USED_INT 0
#  define GPIO_A1_USED_IN 1
#else
#  define GPIO_A1_USED_OUT 0
#  define GPIO_A1_USED_INT 0
#  define GPIO_A1_USED_IN 0
#endif

#if defined(CONFIG_STM32F411MINIMUM_GPIO_A1_OUT_PP)
#  define GPIO_A1_OUTTYPE GPIO_PUSHPULL
#else
#  define GPIO_A1_OUTTYPE GPIO_OPENDRAIN
#endif

#if defined(CONFIG_STM32F411MINIMUM_GPIO_A1_OUT_CLEAR)
#  define GPIO_A1_OUT_DEFAULT GPIO_OUTPUT_CLEAR
#else
#  define GPIO_A1_OUT_DEFAULT GPIO_OUTPUT_SET
#endif

#if defined(CONFIG_STM32F411MINIMUM_GPIO_A1_PULL_DOWN)
#  define GPIO_A1_PULL GPIO_PULLDOWN
#elif defined(CONFIG_STM32F411MINIMUM_GPIO_A1_PULL_FLOAT)
#  define GPIO_A1_PULL GPIO_FLOAT
#else
#  define GPIO_A1_PULL GPIO_PULLUP
#endif

#if defined(CONFIG_STM32F411MINIMUM_GPIO_A1_SPEED_2MHz)
#  define GPIO_A1_SPEED GPIO_SPEED_2MHz
#elif defined(CONFIG_STM32F411MINIMUM_GPIO_A1_SPEED_25MHz)
#  define GPIO_A1_SPEED GPIO_SPEED_25MHz
#else
#  define GPIO_A1_SPEED GPIO_SPEED_50MHz
#endif

/* GPIO A2 Kconfig Mapping */

#if defined(CONFIG_STM32F411MINIMUM_GPIO_A2_OUT)
#  define GPIO_A2_USED_OUT 1
#  define GPIO_A2_USED_INT 0
#  define GPIO_A2_USED_IN 0
#elif defined(CONFIG_STM32F411MINIMUM_GPIO_A2_INT)
#  define GPIO_A2_USED_OUT 0
#  define GPIO_A2_USED_INT 1
#  define GPIO_A2_USED_IN 0
#elif defined(CONFIG_STM32F411MINIMUM_GPIO_A2_IN)
#  define GPIO_A2_USED_OUT 0
#  define GPIO_A2_USED_INT 0
#  define GPIO_A2_USED_IN 1
#else
#  define GPIO_A2_USED_OUT 0
#  define GPIO_A2_USED_INT 0
#  define GPIO_A2_USED_IN 0
#endif

#if defined(CONFIG_STM32F411MINIMUM_GPIO_A2_OUT_PP)
#  define GPIO_A2_OUTTYPE GPIO_PUSHPULL
#else
#  define GPIO_A2_OUTTYPE GPIO_OPENDRAIN
#endif

#if defined(CONFIG_STM32F411MINIMUM_GPIO_A2_OUT_CLEAR)
#  define GPIO_A2_OUT_DEFAULT GPIO_OUTPUT_CLEAR
#else
#  define GPIO_A2_OUT_DEFAULT GPIO_OUTPUT_SET
#endif

#if defined(CONFIG_STM32F411MINIMUM_GPIO_A2_PULL_DOWN)
#  define GPIO_A2_PULL GPIO_PULLDOWN
#elif defined(CONFIG_STM32F411MINIMUM_GPIO_A2_PULL_FLOAT)
#  define GPIO_A2_PULL GPIO_FLOAT
#else
#  define GPIO_A2_PULL GPIO_PULLUP
#endif

#if defined(CONFIG_STM32F411MINIMUM_GPIO_A2_SPEED_2MHz)
#  define GPIO_A2_SPEED GPIO_SPEED_2MHz
#elif defined(CONFIG_STM32F411MINIMUM_GPIO_A2_SPEED_25MHz)
#  define GPIO_A2_SPEED GPIO_SPEED_25MHz
#else
#  define GPIO_A2_SPEED GPIO_SPEED_50MHz
#endif

/* GPIO A3 Kconfig Mapping */

#if defined(CONFIG_STM32F411MINIMUM_GPIO_A3_OUT)
#  define GPIO_A3_USED_OUT 1
#  define GPIO_A3_USED_INT 0
#  define GPIO_A3_USED_IN 0
#elif defined(CONFIG_STM32F411MINIMUM_GPIO_A3_INT)
#  define GPIO_A3_USED_OUT 0
#  define GPIO_A3_USED_INT 1
#  define GPIO_A3_USED_IN 0
#elif defined(CONFIG_STM32F411MINIMUM_GPIO_A3_IN)
#  define GPIO_A3_USED_OUT 0
#  define GPIO_A3_USED_INT 0
#  define GPIO_A3_USED_IN 1
#else
#  define GPIO_A3_USED_OUT 0
#  define GPIO_A3_USED_INT 0
#  define GPIO_A3_USED_IN 0
#endif

#if defined(CONFIG_STM32F411MINIMUM_GPIO_A3_OUT_PP)
#  define GPIO_A3_OUTTYPE GPIO_PUSHPULL
#else
#  define GPIO_A3_OUTTYPE GPIO_OPENDRAIN
#endif

#if defined(CONFIG_STM32F411MINIMUM_GPIO_A3_OUT_CLEAR)
#  define GPIO_A3_OUT_DEFAULT GPIO_OUTPUT_CLEAR
#else
#  define GPIO_A3_OUT_DEFAULT GPIO_OUTPUT_SET
#endif

#if defined(CONFIG_STM32F411MINIMUM_GPIO_A3_PULL_DOWN)
#  define GPIO_A3_PULL GPIO_PULLDOWN
#elif defined(CONFIG_STM32F411MINIMUM_GPIO_A3_PULL_FLOAT)
#  define GPIO_A3_PULL GPIO_FLOAT
#else
#  define GPIO_A3_PULL GPIO_PULLUP
#endif

#if defined(CONFIG_STM32F411MINIMUM_GPIO_A3_SPEED_2MHz)
#  define GPIO_A3_SPEED GPIO_SPEED_2MHz
#elif defined(CONFIG_STM32F411MINIMUM_GPIO_A3_SPEED_25MHz)
#  define GPIO_A3_SPEED GPIO_SPEED_25MHz
#else
#  define GPIO_A3_SPEED GPIO_SPEED_50MHz
#endif

/* GPIO A4 Kconfig Mapping */

#if defined(CONFIG_STM32F411MINIMUM_GPIO_A4_OUT)
#  define GPIO_A4_USED_OUT 1
#  define GPIO_A4_USED_INT 0
#  define GPIO_A4_USED_IN 0
#elif defined(CONFIG_STM32F411MINIMUM_GPIO_A4_INT)
#  define GPIO_A4_USED_OUT 0
#  define GPIO_A4_USED_INT 1
#  define GPIO_A4_USED_IN 0
#elif defined(CONFIG_STM32F411MINIMUM_GPIO_A4_IN)
#  define GPIO_A4_USED_OUT 0
#  define GPIO_A4_USED_INT 0
#  define GPIO_A4_USED_IN 1
#else
#  define GPIO_A4_USED_OUT 0
#  define GPIO_A4_USED_INT 0
#  define GPIO_A4_USED_IN 0
#endif

#if defined(CONFIG_STM32F411MINIMUM_GPIO_A4_OUT_PP)
#  define GPIO_A4_OUTTYPE GPIO_PUSHPULL
#else
#  define GPIO_A4_OUTTYPE GPIO_OPENDRAIN
#endif

#if defined(CONFIG_STM32F411MINIMUM_GPIO_A4_OUT_CLEAR)
#  define GPIO_A4_OUT_DEFAULT GPIO_OUTPUT_CLEAR
#else
#  define GPIO_A4_OUT_DEFAULT GPIO_OUTPUT_SET
#endif

#if defined(CONFIG_STM32F411MINIMUM_GPIO_A4_PULL_DOWN)
#  define GPIO_A4_PULL GPIO_PULLDOWN
#elif defined(CONFIG_STM32F411MINIMUM_GPIO_A4_PULL_FLOAT)
#  define GPIO_A4_PULL GPIO_FLOAT
#else
#  define GPIO_A4_PULL GPIO_PULLUP
#endif

#if defined(CONFIG_STM32F411MINIMUM_GPIO_A4_SPEED_2MHz)
#  define GPIO_A4_SPEED GPIO_SPEED_2MHz
#elif defined(CONFIG_STM32F411MINIMUM_GPIO_A4_SPEED_25MHz)
#  define GPIO_A4_SPEED GPIO_SPEED_25MHz
#else
#  define GPIO_A4_SPEED GPIO_SPEED_50MHz
#endif

/* GPIO A5 Kconfig Mapping */

#if defined(CONFIG_STM32F411MINIMUM_GPIO_A5_OUT)
#  define GPIO_A5_USED_OUT 1
#  define GPIO_A5_USED_INT 0
#  define GPIO_A5_USED_IN 0
#elif defined(CONFIG_STM32F411MINIMUM_GPIO_A5_INT)
#  define GPIO_A5_USED_OUT 0
#  define GPIO_A5_USED_INT 1
#  define GPIO_A5_USED_IN 0
#elif defined(CONFIG_STM32F411MINIMUM_GPIO_A5_IN)
#  define GPIO_A5_USED_OUT 0
#  define GPIO_A5_USED_INT 0
#  define GPIO_A5_USED_IN 1
#else
#  define GPIO_A5_USED_OUT 0
#  define GPIO_A5_USED_INT 0
#  define GPIO_A5_USED_IN 0
#endif

#if defined(CONFIG_STM32F411MINIMUM_GPIO_A5_OUT_PP)
#  define GPIO_A5_OUTTYPE GPIO_PUSHPULL
#else
#  define GPIO_A5_OUTTYPE GPIO_OPENDRAIN
#endif

#if defined(CONFIG_STM32F411MINIMUM_GPIO_A5_OUT_CLEAR)
#  define GPIO_A5_OUT_DEFAULT GPIO_OUTPUT_CLEAR
#else
#  define GPIO_A5_OUT_DEFAULT GPIO_OUTPUT_SET
#endif

#if defined(CONFIG_STM32F411MINIMUM_GPIO_A5_PULL_DOWN)
#  define GPIO_A5_PULL GPIO_PULLDOWN
#elif defined(CONFIG_STM32F411MINIMUM_GPIO_A5_PULL_FLOAT)
#  define GPIO_A5_PULL GPIO_FLOAT
#else
#  define GPIO_A5_PULL GPIO_PULLUP
#endif

#if defined(CONFIG_STM32F411MINIMUM_GPIO_A5_SPEED_2MHz)
#  define GPIO_A5_SPEED GPIO_SPEED_2MHz
#elif defined(CONFIG_STM32F411MINIMUM_GPIO_A5_SPEED_25MHz)
#  define GPIO_A5_SPEED GPIO_SPEED_25MHz
#else
#  define GPIO_A5_SPEED GPIO_SPEED_50MHz
#endif

/* GPIO A6 Kconfig Mapping */

#if defined(CONFIG_STM32F411MINIMUM_GPIO_A6_OUT)
#  define GPIO_A6_USED_OUT 1
#  define GPIO_A6_USED_INT 0
#  define GPIO_A6_USED_IN 0
#elif defined(CONFIG_STM32F411MINIMUM_GPIO_A6_INT)
#  define GPIO_A6_USED_OUT 0
#  define GPIO_A6_USED_INT 1
#  define GPIO_A6_USED_IN 0
#elif defined(CONFIG_STM32F411MINIMUM_GPIO_A6_IN)
#  define GPIO_A6_USED_OUT 0
#  define GPIO_A6_USED_INT 0
#  define GPIO_A6_USED_IN 1
#else
#  define GPIO_A6_USED_OUT 0
#  define GPIO_A6_USED_INT 0
#  define GPIO_A6_USED_IN 0
#endif

#if defined(CONFIG_STM32F411MINIMUM_GPIO_A6_OUT_PP)
#  define GPIO_A6_OUTTYPE GPIO_PUSHPULL
#else
#  define GPIO_A6_OUTTYPE GPIO_OPENDRAIN
#endif

#if defined(CONFIG_STM32F411MINIMUM_GPIO_A6_OUT_CLEAR)
#  define GPIO_A6_OUT_DEFAULT GPIO_OUTPUT_CLEAR
#else
#  define GPIO_A6_OUT_DEFAULT GPIO_OUTPUT_SET
#endif

#if defined(CONFIG_STM32F411MINIMUM_GPIO_A6_PULL_DOWN)
#  define GPIO_A6_PULL GPIO_PULLDOWN
#elif defined(CONFIG_STM32F411MINIMUM_GPIO_A6_PULL_FLOAT)
#  define GPIO_A6_PULL GPIO_FLOAT
#else
#  define GPIO_A6_PULL GPIO_PULLUP
#endif

#if defined(CONFIG_STM32F411MINIMUM_GPIO_A6_SPEED_2MHz)
#  define GPIO_A6_SPEED GPIO_SPEED_2MHz
#elif defined(CONFIG_STM32F411MINIMUM_GPIO_A6_SPEED_25MHz)
#  define GPIO_A6_SPEED GPIO_SPEED_25MHz
#else
#  define GPIO_A6_SPEED GPIO_SPEED_50MHz
#endif

/* GPIO A7 Kconfig Mapping */

#if defined(CONFIG_STM32F411MINIMUM_GPIO_A7_OUT)
#  define GPIO_A7_USED_OUT 1
#  define GPIO_A7_USED_INT 0
#  define GPIO_A7_USED_IN 0
#elif defined(CONFIG_STM32F411MINIMUM_GPIO_A7_INT)
#  define GPIO_A7_USED_OUT 0
#  define GPIO_A7_USED_INT 1
#  define GPIO_A7_USED_IN 0
#elif defined(CONFIG_STM32F411MINIMUM_GPIO_A7_IN)
#  define GPIO_A7_USED_OUT 0
#  define GPIO_A7_USED_INT 0
#  define GPIO_A7_USED_IN 1
#else
#  define GPIO_A7_USED_OUT 0
#  define GPIO_A7_USED_INT 0
#  define GPIO_A7_USED_IN 0
#endif

#if defined(CONFIG_STM32F411MINIMUM_GPIO_A7_OUT_PP)
#  define GPIO_A7_OUTTYPE GPIO_PUSHPULL
#else
#  define GPIO_A7_OUTTYPE GPIO_OPENDRAIN
#endif

#if defined(CONFIG_STM32F411MINIMUM_GPIO_A7_OUT_CLEAR)
#  define GPIO_A7_OUT_DEFAULT GPIO_OUTPUT_CLEAR
#else
#  define GPIO_A7_OUT_DEFAULT GPIO_OUTPUT_SET
#endif

#if defined(CONFIG_STM32F411MINIMUM_GPIO_A7_PULL_DOWN)
#  define GPIO_A7_PULL GPIO_PULLDOWN
#elif defined(CONFIG_STM32F411MINIMUM_GPIO_A7_PULL_FLOAT)
#  define GPIO_A7_PULL GPIO_FLOAT
#else
#  define GPIO_A7_PULL GPIO_PULLUP
#endif

#if defined(CONFIG_STM32F411MINIMUM_GPIO_A7_SPEED_2MHz)
#  define GPIO_A7_SPEED GPIO_SPEED_2MHz
#elif defined(CONFIG_STM32F411MINIMUM_GPIO_A7_SPEED_25MHz)
#  define GPIO_A7_SPEED GPIO_SPEED_25MHz
#else
#  define GPIO_A7_SPEED GPIO_SPEED_50MHz
#endif

/* GPIO A8 Kconfig Mapping */

#if defined(CONFIG_STM32F411MINIMUM_GPIO_A8_OUT)
#  define GPIO_A8_USED_OUT 1
#  define GPIO_A8_USED_INT 0
#  define GPIO_A8_USED_IN 0
#elif defined(CONFIG_STM32F411MINIMUM_GPIO_A8_INT)
#  define GPIO_A8_USED_OUT 0
#  define GPIO_A8_USED_INT 1
#  define GPIO_A8_USED_IN 0
#elif defined(CONFIG_STM32F411MINIMUM_GPIO_A8_IN)
#  define GPIO_A8_USED_OUT 0
#  define GPIO_A8_USED_INT 0
#  define GPIO_A8_USED_IN 1
#else
#  define GPIO_A8_USED_OUT 0
#  define GPIO_A8_USED_INT 0
#  define GPIO_A8_USED_IN 0
#endif

#if defined(CONFIG_STM32F411MINIMUM_GPIO_A8_OUT_PP)
#  define GPIO_A8_OUTTYPE GPIO_PUSHPULL
#else
#  define GPIO_A8_OUTTYPE GPIO_OPENDRAIN
#endif

#if defined(CONFIG_STM32F411MINIMUM_GPIO_A8_OUT_CLEAR)
#  define GPIO_A8_OUT_DEFAULT GPIO_OUTPUT_CLEAR
#else
#  define GPIO_A8_OUT_DEFAULT GPIO_OUTPUT_SET
#endif

#if defined(CONFIG_STM32F411MINIMUM_GPIO_A8_PULL_DOWN)
#  define GPIO_A8_PULL GPIO_PULLDOWN
#elif defined(CONFIG_STM32F411MINIMUM_GPIO_A8_PULL_FLOAT)
#  define GPIO_A8_PULL GPIO_FLOAT
#else
#  define GPIO_A8_PULL GPIO_PULLUP
#endif

#if defined(CONFIG_STM32F411MINIMUM_GPIO_A8_SPEED_2MHz)
#  define GPIO_A8_SPEED GPIO_SPEED_2MHz
#elif defined(CONFIG_STM32F411MINIMUM_GPIO_A8_SPEED_25MHz)
#  define GPIO_A8_SPEED GPIO_SPEED_25MHz
#else
#  define GPIO_A8_SPEED GPIO_SPEED_50MHz
#endif

/* GPIO A9 Kconfig Mapping */

#if defined(CONFIG_STM32F411MINIMUM_GPIO_A9_OUT)
#  define GPIO_A9_USED_OUT 1
#  define GPIO_A9_USED_INT 0
#  define GPIO_A9_USED_IN 0
#elif defined(CONFIG_STM32F411MINIMUM_GPIO_A9_INT)
#  define GPIO_A9_USED_OUT 0
#  define GPIO_A9_USED_INT 1
#  define GPIO_A9_USED_IN 0
#elif defined(CONFIG_STM32F411MINIMUM_GPIO_A9_IN)
#  define GPIO_A9_USED_OUT 0
#  define GPIO_A9_USED_INT 0
#  define GPIO_A9_USED_IN 1
#else
#  define GPIO_A9_USED_OUT 0
#  define GPIO_A9_USED_INT 0
#  define GPIO_A9_USED_IN 0
#endif

#if defined(CONFIG_STM32F411MINIMUM_GPIO_A9_OUT_PP)
#  define GPIO_A9_OUTTYPE GPIO_PUSHPULL
#else
#  define GPIO_A9_OUTTYPE GPIO_OPENDRAIN
#endif

#if defined(CONFIG_STM32F411MINIMUM_GPIO_A9_OUT_CLEAR)
#  define GPIO_A9_OUT_DEFAULT GPIO_OUTPUT_CLEAR
#else
#  define GPIO_A9_OUT_DEFAULT GPIO_OUTPUT_SET
#endif

#if defined(CONFIG_STM32F411MINIMUM_GPIO_A9_PULL_DOWN)
#  define GPIO_A9_PULL GPIO_PULLDOWN
#elif defined(CONFIG_STM32F411MINIMUM_GPIO_A9_PULL_FLOAT)
#  define GPIO_A9_PULL GPIO_FLOAT
#else
#  define GPIO_A9_PULL GPIO_PULLUP
#endif

#if defined(CONFIG_STM32F411MINIMUM_GPIO_A9_SPEED_2MHz)
#  define GPIO_A9_SPEED GPIO_SPEED_2MHz
#elif defined(CONFIG_STM32F411MINIMUM_GPIO_A9_SPEED_25MHz)
#  define GPIO_A9_SPEED GPIO_SPEED_25MHz
#else
#  define GPIO_A9_SPEED GPIO_SPEED_50MHz
#endif

/* GPIO A10 Kconfig Mapping */

#if defined(CONFIG_STM32F411MINIMUM_GPIO_A10_OUT)
#  define GPIO_A10_USED_OUT 1
#  define GPIO_A10_USED_INT 0
#  define GPIO_A10_USED_IN 0
#elif defined(CONFIG_STM32F411MINIMUM_GPIO_A10_INT)
#  define GPIO_A10_USED_OUT 0
#  define GPIO_A10_USED_INT 1
#  define GPIO_A10_USED_IN 0
#elif defined(CONFIG_STM32F411MINIMUM_GPIO_A10_IN)
#  define GPIO_A10_USED_OUT 0
#  define GPIO_A10_USED_INT 0
#  define GPIO_A10_USED_IN 1
#else
#  define GPIO_A10_USED_OUT 0
#  define GPIO_A10_USED_INT 0
#  define GPIO_A10_USED_IN 0
#endif

#if defined(CONFIG_STM32F411MINIMUM_GPIO_A10_OUT_PP)
#  define GPIO_A10_OUTTYPE GPIO_PUSHPULL
#else
#  define GPIO_A10_OUTTYPE GPIO_OPENDRAIN
#endif

#if defined(CONFIG_STM32F411MINIMUM_GPIO_A10_OUT_CLEAR)
#  define GPIO_A10_OUT_DEFAULT GPIO_OUTPUT_CLEAR
#else
#  define GPIO_A10_OUT_DEFAULT GPIO_OUTPUT_SET
#endif

#if defined(CONFIG_STM32F411MINIMUM_GPIO_A10_PULL_DOWN)
#  define GPIO_A10_PULL GPIO_PULLDOWN
#elif defined(CONFIG_STM32F411MINIMUM_GPIO_A10_PULL_FLOAT)
#  define GPIO_A10_PULL GPIO_FLOAT
#else
#  define GPIO_A10_PULL GPIO_PULLUP
#endif

#if defined(CONFIG_STM32F411MINIMUM_GPIO_A10_SPEED_2MHz)
#  define GPIO_A10_SPEED GPIO_SPEED_2MHz
#elif defined(CONFIG_STM32F411MINIMUM_GPIO_A10_SPEED_25MHz)
#  define GPIO_A10_SPEED GPIO_SPEED_25MHz
#else
#  define GPIO_A10_SPEED GPIO_SPEED_50MHz
#endif

/* GPIO A11 Kconfig Mapping */

#if defined(CONFIG_STM32F411MINIMUM_GPIO_A11_OUT)
#  define GPIO_A11_USED_OUT 1
#  define GPIO_A11_USED_INT 0
#  define GPIO_A11_USED_IN 0
#elif defined(CONFIG_STM32F411MINIMUM_GPIO_A11_INT)
#  define GPIO_A11_USED_OUT 0
#  define GPIO_A11_USED_INT 1
#  define GPIO_A11_USED_IN 0
#elif defined(CONFIG_STM32F411MINIMUM_GPIO_A11_IN)
#  define GPIO_A11_USED_OUT 0
#  define GPIO_A11_USED_INT 0
#  define GPIO_A11_USED_IN 1
#else
#  define GPIO_A11_USED_OUT 0
#  define GPIO_A11_USED_INT 0
#  define GPIO_A11_USED_IN 0
#endif

#if defined(CONFIG_STM32F411MINIMUM_GPIO_A11_OUT_PP)
#  define GPIO_A11_OUTTYPE GPIO_PUSHPULL
#else
#  define GPIO_A11_OUTTYPE GPIO_OPENDRAIN
#endif

#if defined(CONFIG_STM32F411MINIMUM_GPIO_A11_OUT_CLEAR)
#  define GPIO_A11_OUT_DEFAULT GPIO_OUTPUT_CLEAR
#else
#  define GPIO_A11_OUT_DEFAULT GPIO_OUTPUT_SET
#endif

#if defined(CONFIG_STM32F411MINIMUM_GPIO_A11_PULL_DOWN)
#  define GPIO_A11_PULL GPIO_PULLDOWN
#elif defined(CONFIG_STM32F411MINIMUM_GPIO_A11_PULL_FLOAT)
#  define GPIO_A11_PULL GPIO_FLOAT
#else
#  define GPIO_A11_PULL GPIO_PULLUP
#endif

#if defined(CONFIG_STM32F411MINIMUM_GPIO_A11_SPEED_2MHz)
#  define GPIO_A11_SPEED GPIO_SPEED_2MHz
#elif defined(CONFIG_STM32F411MINIMUM_GPIO_A11_SPEED_25MHz)
#  define GPIO_A11_SPEED GPIO_SPEED_25MHz
#else
#  define GPIO_A11_SPEED GPIO_SPEED_50MHz
#endif

/* GPIO A12 Kconfig Mapping */

#if defined(CONFIG_STM32F411MINIMUM_GPIO_A12_OUT)
#  define GPIO_A12_USED_OUT 1
#  define GPIO_A12_USED_INT 0
#  define GPIO_A12_USED_IN 0
#elif defined(CONFIG_STM32F411MINIMUM_GPIO_A12_INT)
#  define GPIO_A12_USED_OUT 0
#  define GPIO_A12_USED_INT 1
#  define GPIO_A12_USED_IN 0
#elif defined(CONFIG_STM32F411MINIMUM_GPIO_A12_IN)
#  define GPIO_A12_USED_OUT 0
#  define GPIO_A12_USED_INT 0
#  define GPIO_A12_USED_IN 1
#else
#  define GPIO_A12_USED_OUT 0
#  define GPIO_A12_USED_INT 0
#  define GPIO_A12_USED_IN 0
#endif

#if defined(CONFIG_STM32F411MINIMUM_GPIO_A12_OUT_PP)
#  define GPIO_A12_OUTTYPE GPIO_PUSHPULL
#else
#  define GPIO_A12_OUTTYPE GPIO_OPENDRAIN
#endif

#if defined(CONFIG_STM32F411MINIMUM_GPIO_A12_OUT_CLEAR)
#  define GPIO_A12_OUT_DEFAULT GPIO_OUTPUT_CLEAR
#else
#  define GPIO_A12_OUT_DEFAULT GPIO_OUTPUT_SET
#endif

#if defined(CONFIG_STM32F411MINIMUM_GPIO_A12_PULL_DOWN)
#  define GPIO_A12_PULL GPIO_PULLDOWN
#elif defined(CONFIG_STM32F411MINIMUM_GPIO_A12_PULL_FLOAT)
#  define GPIO_A12_PULL GPIO_FLOAT
#else
#  define GPIO_A12_PULL GPIO_PULLUP
#endif

#if defined(CONFIG_STM32F411MINIMUM_GPIO_A12_SPEED_2MHz)
#  define GPIO_A12_SPEED GPIO_SPEED_2MHz
#elif defined(CONFIG_STM32F411MINIMUM_GPIO_A12_SPEED_25MHz)
#  define GPIO_A12_SPEED GPIO_SPEED_25MHz
#else
#  define GPIO_A12_SPEED GPIO_SPEED_50MHz
#endif

/* GPIO A15 Kconfig Mapping */

#if defined(CONFIG_STM32F411MINIMUM_GPIO_A15_OUT)
#  define GPIO_A15_USED_OUT 1
#  define GPIO_A15_USED_INT 0
#  define GPIO_A15_USED_IN 0
#elif defined(CONFIG_STM32F411MINIMUM_GPIO_A15_INT)
#  define GPIO_A15_USED_OUT 0
#  define GPIO_A15_USED_INT 1
#  define GPIO_A15_USED_IN 0
#elif defined(CONFIG_STM32F411MINIMUM_GPIO_A15_IN)
#  define GPIO_A15_USED_OUT 0
#  define GPIO_A15_USED_INT 0
#  define GPIO_A15_USED_IN 1
#else
#  define GPIO_A15_USED_OUT 0
#  define GPIO_A15_USED_INT 0
#  define GPIO_A15_USED_IN 0
#endif

#if defined(CONFIG_STM32F411MINIMUM_GPIO_A15_OUT_PP)
#  define GPIO_A15_OUTTYPE GPIO_PUSHPULL
#else
#  define GPIO_A15_OUTTYPE GPIO_OPENDRAIN
#endif

#if defined(CONFIG_STM32F411MINIMUM_GPIO_A15_OUT_CLEAR)
#  define GPIO_A15_OUT_DEFAULT GPIO_OUTPUT_CLEAR
#else
#  define GPIO_A15_OUT_DEFAULT GPIO_OUTPUT_SET
#endif

#if defined(CONFIG_STM32F411MINIMUM_GPIO_A15_PULL_DOWN)
#  define GPIO_A15_PULL GPIO_PULLDOWN
#elif defined(CONFIG_STM32F411MINIMUM_GPIO_A15_PULL_FLOAT)
#  define GPIO_A15_PULL GPIO_FLOAT
#else
#  define GPIO_A15_PULL GPIO_PULLUP
#endif

#if defined(CONFIG_STM32F411MINIMUM_GPIO_A15_SPEED_2MHz)
#  define GPIO_A15_SPEED GPIO_SPEED_2MHz
#elif defined(CONFIG_STM32F411MINIMUM_GPIO_A15_SPEED_25MHz)
#  define GPIO_A15_SPEED GPIO_SPEED_25MHz
#else
#  define GPIO_A15_SPEED GPIO_SPEED_50MHz
#endif

/* GPIO B0 Kconfig Mapping */

#if defined(CONFIG_STM32F411MINIMUM_GPIO_B0_OUT)
#  define GPIO_B0_USED_OUT 1
#  define GPIO_B0_USED_INT 0
#  define GPIO_B0_USED_IN 0
#elif defined(CONFIG_STM32F411MINIMUM_GPIO_B0_INT)
#  define GPIO_B0_USED_OUT 0
#  define GPIO_B0_USED_INT 1
#  define GPIO_B0_USED_IN 0
#elif defined(CONFIG_STM32F411MINIMUM_GPIO_B0_IN)
#  define GPIO_B0_USED_OUT 0
#  define GPIO_B0_USED_INT 0
#  define GPIO_B0_USED_IN 1
#else
#  define GPIO_B0_USED_OUT 0
#  define GPIO_B0_USED_INT 0
#  define GPIO_B0_USED_IN 0
#endif

#if defined(CONFIG_STM32F411MINIMUM_GPIO_B0_OUT_PP)
#  define GPIO_B0_OUTTYPE GPIO_PUSHPULL
#else
#  define GPIO_B0_OUTTYPE GPIO_OPENDRAIN
#endif

#if defined(CONFIG_STM32F411MINIMUM_GPIO_B0_OUT_CLEAR)
#  define GPIO_B0_OUT_DEFAULT GPIO_OUTPUT_CLEAR
#else
#  define GPIO_B0_OUT_DEFAULT GPIO_OUTPUT_SET
#endif

#if defined(CONFIG_STM32F411MINIMUM_GPIO_B0_PULL_DOWN)
#  define GPIO_B0_PULL GPIO_PULLDOWN
#elif defined(CONFIG_STM32F411MINIMUM_GPIO_B0_PULL_FLOAT)
#  define GPIO_B0_PULL GPIO_FLOAT
#else
#  define GPIO_B0_PULL GPIO_PULLUP
#endif

#if defined(CONFIG_STM32F411MINIMUM_GPIO_B0_SPEED_2MHz)
#  define GPIO_B0_SPEED GPIO_SPEED_2MHz
#elif defined(CONFIG_STM32F411MINIMUM_GPIO_B0_SPEED_25MHz)
#  define GPIO_B0_SPEED GPIO_SPEED_25MHz
#else
#  define GPIO_B0_SPEED GPIO_SPEED_50MHz
#endif

/* GPIO B1 Kconfig Mapping */

#if defined(CONFIG_STM32F411MINIMUM_GPIO_B1_OUT)
#  define GPIO_B1_USED_OUT 1
#  define GPIO_B1_USED_INT 0
#  define GPIO_B1_USED_IN 0
#elif defined(CONFIG_STM32F411MINIMUM_GPIO_B1_INT)
#  define GPIO_B1_USED_OUT 0
#  define GPIO_B1_USED_INT 1
#  define GPIO_B1_USED_IN 0
#elif defined(CONFIG_STM32F411MINIMUM_GPIO_B1_IN)
#  define GPIO_B1_USED_OUT 0
#  define GPIO_B1_USED_INT 0
#  define GPIO_B1_USED_IN 1
#else
#  define GPIO_B1_USED_OUT 0
#  define GPIO_B1_USED_INT 0
#  define GPIO_B1_USED_IN 0
#endif

#if defined(CONFIG_STM32F411MINIMUM_GPIO_B1_OUT_PP)
#  define GPIO_B1_OUTTYPE GPIO_PUSHPULL
#else
#  define GPIO_B1_OUTTYPE GPIO_OPENDRAIN
#endif

#if defined(CONFIG_STM32F411MINIMUM_GPIO_B1_OUT_CLEAR)
#  define GPIO_B1_OUT_DEFAULT GPIO_OUTPUT_CLEAR
#else
#  define GPIO_B1_OUT_DEFAULT GPIO_OUTPUT_SET
#endif

#if defined(CONFIG_STM32F411MINIMUM_GPIO_B1_PULL_DOWN)
#  define GPIO_B1_PULL GPIO_PULLDOWN
#elif defined(CONFIG_STM32F411MINIMUM_GPIO_B1_PULL_FLOAT)
#  define GPIO_B1_PULL GPIO_FLOAT
#else
#  define GPIO_B1_PULL GPIO_PULLUP
#endif

#if defined(CONFIG_STM32F411MINIMUM_GPIO_B1_SPEED_2MHz)
#  define GPIO_B1_SPEED GPIO_SPEED_2MHz
#elif defined(CONFIG_STM32F411MINIMUM_GPIO_B1_SPEED_25MHz)
#  define GPIO_B1_SPEED GPIO_SPEED_25MHz
#else
#  define GPIO_B1_SPEED GPIO_SPEED_50MHz
#endif

/* GPIO B2 Kconfig Mapping */

#if defined(CONFIG_STM32F411MINIMUM_GPIO_B2_OUT)
#  define GPIO_B2_USED_OUT 1
#  define GPIO_B2_USED_INT 0
#  define GPIO_B2_USED_IN 0
#elif defined(CONFIG_STM32F411MINIMUM_GPIO_B2_INT)
#  define GPIO_B2_USED_OUT 0
#  define GPIO_B2_USED_INT 1
#  define GPIO_B2_USED_IN 0
#elif defined(CONFIG_STM32F411MINIMUM_GPIO_B2_IN)
#  define GPIO_B2_USED_OUT 0
#  define GPIO_B2_USED_INT 0
#  define GPIO_B2_USED_IN 1
#else
#  define GPIO_B2_USED_OUT 0
#  define GPIO_B2_USED_INT 0
#  define GPIO_B2_USED_IN 0
#endif

#if defined(CONFIG_STM32F411MINIMUM_GPIO_B2_OUT_PP)
#  define GPIO_B2_OUTTYPE GPIO_PUSHPULL
#else
#  define GPIO_B2_OUTTYPE GPIO_OPENDRAIN
#endif

#if defined(CONFIG_STM32F411MINIMUM_GPIO_B2_OUT_CLEAR)
#  define GPIO_B2_OUT_DEFAULT GPIO_OUTPUT_CLEAR
#else
#  define GPIO_B2_OUT_DEFAULT GPIO_OUTPUT_SET
#endif

#if defined(CONFIG_STM32F411MINIMUM_GPIO_B2_PULL_DOWN)
#  define GPIO_B2_PULL GPIO_PULLDOWN
#elif defined(CONFIG_STM32F411MINIMUM_GPIO_B2_PULL_FLOAT)
#  define GPIO_B2_PULL GPIO_FLOAT
#else
#  define GPIO_B2_PULL GPIO_PULLUP
#endif

#if defined(CONFIG_STM32F411MINIMUM_GPIO_B2_SPEED_2MHz)
#  define GPIO_B2_SPEED GPIO_SPEED_2MHz
#elif defined(CONFIG_STM32F411MINIMUM_GPIO_B2_SPEED_25MHz)
#  define GPIO_B2_SPEED GPIO_SPEED_25MHz
#else
#  define GPIO_B2_SPEED GPIO_SPEED_50MHz
#endif

/* GPIO B3 Kconfig Mapping */

#if defined(CONFIG_STM32F411MINIMUM_GPIO_B3_OUT)
#  define GPIO_B3_USED_OUT 1
#  define GPIO_B3_USED_INT 0
#  define GPIO_B3_USED_IN 0
#elif defined(CONFIG_STM32F411MINIMUM_GPIO_B3_INT)
#  define GPIO_B3_USED_OUT 0
#  define GPIO_B3_USED_INT 1
#  define GPIO_B3_USED_IN 0
#elif defined(CONFIG_STM32F411MINIMUM_GPIO_B3_IN)
#  define GPIO_B3_USED_OUT 0
#  define GPIO_B3_USED_INT 0
#  define GPIO_B3_USED_IN 1
#else
#  define GPIO_B3_USED_OUT 0
#  define GPIO_B3_USED_INT 0
#  define GPIO_B3_USED_IN 0
#endif

#if defined(CONFIG_STM32F411MINIMUM_GPIO_B3_OUT_PP)
#  define GPIO_B3_OUTTYPE GPIO_PUSHPULL
#else
#  define GPIO_B3_OUTTYPE GPIO_OPENDRAIN
#endif

#if defined(CONFIG_STM32F411MINIMUM_GPIO_B3_OUT_CLEAR)
#  define GPIO_B3_OUT_DEFAULT GPIO_OUTPUT_CLEAR
#else
#  define GPIO_B3_OUT_DEFAULT GPIO_OUTPUT_SET
#endif

#if defined(CONFIG_STM32F411MINIMUM_GPIO_B3_PULL_DOWN)
#  define GPIO_B3_PULL GPIO_PULLDOWN
#elif defined(CONFIG_STM32F411MINIMUM_GPIO_B3_PULL_FLOAT)
#  define GPIO_B3_PULL GPIO_FLOAT
#else
#  define GPIO_B3_PULL GPIO_PULLUP
#endif

#if defined(CONFIG_STM32F411MINIMUM_GPIO_B3_SPEED_2MHz)
#  define GPIO_B3_SPEED GPIO_SPEED_2MHz
#elif defined(CONFIG_STM32F411MINIMUM_GPIO_B3_SPEED_25MHz)
#  define GPIO_B3_SPEED GPIO_SPEED_25MHz
#else
#  define GPIO_B3_SPEED GPIO_SPEED_50MHz
#endif

/* GPIO B4 Kconfig Mapping */

#if defined(CONFIG_STM32F411MINIMUM_GPIO_B4_OUT)
#  define GPIO_B4_USED_OUT 1
#  define GPIO_B4_USED_INT 0
#  define GPIO_B4_USED_IN 0
#elif defined(CONFIG_STM32F411MINIMUM_GPIO_B4_INT)
#  define GPIO_B4_USED_OUT 0
#  define GPIO_B4_USED_INT 1
#  define GPIO_B4_USED_IN 0
#elif defined(CONFIG_STM32F411MINIMUM_GPIO_B4_IN)
#  define GPIO_B4_USED_OUT 0
#  define GPIO_B4_USED_INT 0
#  define GPIO_B4_USED_IN 1
#else
#  define GPIO_B4_USED_OUT 0
#  define GPIO_B4_USED_INT 0
#  define GPIO_B4_USED_IN 0
#endif

#if defined(CONFIG_STM32F411MINIMUM_GPIO_B4_OUT_PP)
#  define GPIO_B4_OUTTYPE GPIO_PUSHPULL
#else
#  define GPIO_B4_OUTTYPE GPIO_OPENDRAIN
#endif

#if defined(CONFIG_STM32F411MINIMUM_GPIO_B4_OUT_CLEAR)
#  define GPIO_B4_OUT_DEFAULT GPIO_OUTPUT_CLEAR
#else
#  define GPIO_B4_OUT_DEFAULT GPIO_OUTPUT_SET
#endif

#if defined(CONFIG_STM32F411MINIMUM_GPIO_B4_PULL_DOWN)
#  define GPIO_B4_PULL GPIO_PULLDOWN
#elif defined(CONFIG_STM32F411MINIMUM_GPIO_B4_PULL_FLOAT)
#  define GPIO_B4_PULL GPIO_FLOAT
#else
#  define GPIO_B4_PULL GPIO_PULLUP
#endif

#if defined(CONFIG_STM32F411MINIMUM_GPIO_B4_SPEED_2MHz)
#  define GPIO_B4_SPEED GPIO_SPEED_2MHz
#elif defined(CONFIG_STM32F411MINIMUM_GPIO_B4_SPEED_25MHz)
#  define GPIO_B4_SPEED GPIO_SPEED_25MHz
#else
#  define GPIO_B4_SPEED GPIO_SPEED_50MHz
#endif

/* GPIO B5 Kconfig Mapping */

#if defined(CONFIG_STM32F411MINIMUM_GPIO_B5_OUT)
#  define GPIO_B5_USED_OUT 1
#  define GPIO_B5_USED_INT 0
#  define GPIO_B5_USED_IN 0
#elif defined(CONFIG_STM32F411MINIMUM_GPIO_B5_INT)
#  define GPIO_B5_USED_OUT 0
#  define GPIO_B5_USED_INT 1
#  define GPIO_B5_USED_IN 0
#elif defined(CONFIG_STM32F411MINIMUM_GPIO_B5_IN)
#  define GPIO_B5_USED_OUT 0
#  define GPIO_B5_USED_INT 0
#  define GPIO_B5_USED_IN 1
#else
#  define GPIO_B5_USED_OUT 0
#  define GPIO_B5_USED_INT 0
#  define GPIO_B5_USED_IN 0
#endif

#if defined(CONFIG_STM32F411MINIMUM_GPIO_B5_OUT_PP)
#  define GPIO_B5_OUTTYPE GPIO_PUSHPULL
#else
#  define GPIO_B5_OUTTYPE GPIO_OPENDRAIN
#endif

#if defined(CONFIG_STM32F411MINIMUM_GPIO_B5_OUT_CLEAR)
#  define GPIO_B5_OUT_DEFAULT GPIO_OUTPUT_CLEAR
#else
#  define GPIO_B5_OUT_DEFAULT GPIO_OUTPUT_SET
#endif

#if defined(CONFIG_STM32F411MINIMUM_GPIO_B5_PULL_DOWN)
#  define GPIO_B5_PULL GPIO_PULLDOWN
#elif defined(CONFIG_STM32F411MINIMUM_GPIO_B5_PULL_FLOAT)
#  define GPIO_B5_PULL GPIO_FLOAT
#else
#  define GPIO_B5_PULL GPIO_PULLUP
#endif

#if defined(CONFIG_STM32F411MINIMUM_GPIO_B5_SPEED_2MHz)
#  define GPIO_B5_SPEED GPIO_SPEED_2MHz
#elif defined(CONFIG_STM32F411MINIMUM_GPIO_B5_SPEED_25MHz)
#  define GPIO_B5_SPEED GPIO_SPEED_25MHz
#else
#  define GPIO_B5_SPEED GPIO_SPEED_50MHz
#endif

/* GPIO B6 Kconfig Mapping */

#if defined(CONFIG_STM32F411MINIMUM_GPIO_B6_OUT)
#  define GPIO_B6_USED_OUT 1
#  define GPIO_B6_USED_INT 0
#  define GPIO_B6_USED_IN 0
#elif defined(CONFIG_STM32F411MINIMUM_GPIO_B6_INT)
#  define GPIO_B6_USED_OUT 0
#  define GPIO_B6_USED_INT 1
#  define GPIO_B6_USED_IN 0
#elif defined(CONFIG_STM32F411MINIMUM_GPIO_B6_IN)
#  define GPIO_B6_USED_OUT 0
#  define GPIO_B6_USED_INT 0
#  define GPIO_B6_USED_IN 1
#else
#  define GPIO_B6_USED_OUT 0
#  define GPIO_B6_USED_INT 0
#  define GPIO_B6_USED_IN 0
#endif

#if defined(CONFIG_STM32F411MINIMUM_GPIO_B6_OUT_PP)
#  define GPIO_B6_OUTTYPE GPIO_PUSHPULL
#else
#  define GPIO_B6_OUTTYPE GPIO_OPENDRAIN
#endif

#if defined(CONFIG_STM32F411MINIMUM_GPIO_B6_OUT_CLEAR)
#  define GPIO_B6_OUT_DEFAULT GPIO_OUTPUT_CLEAR
#else
#  define GPIO_B6_OUT_DEFAULT GPIO_OUTPUT_SET
#endif

#if defined(CONFIG_STM32F411MINIMUM_GPIO_B6_PULL_DOWN)
#  define GPIO_B6_PULL GPIO_PULLDOWN
#elif defined(CONFIG_STM32F411MINIMUM_GPIO_B6_PULL_FLOAT)
#  define GPIO_B6_PULL GPIO_FLOAT
#else
#  define GPIO_B6_PULL GPIO_PULLUP
#endif

#if defined(CONFIG_STM32F411MINIMUM_GPIO_B6_SPEED_2MHz)
#  define GPIO_B6_SPEED GPIO_SPEED_2MHz
#elif defined(CONFIG_STM32F411MINIMUM_GPIO_B6_SPEED_25MHz)
#  define GPIO_B6_SPEED GPIO_SPEED_25MHz
#else
#  define GPIO_B6_SPEED GPIO_SPEED_50MHz
#endif

/* GPIO B7 Kconfig Mapping */

#if defined(CONFIG_STM32F411MINIMUM_GPIO_B7_OUT)
#  define GPIO_B7_USED_OUT 1
#  define GPIO_B7_USED_INT 0
#  define GPIO_B7_USED_IN 0
#elif defined(CONFIG_STM32F411MINIMUM_GPIO_B7_INT)
#  define GPIO_B7_USED_OUT 0
#  define GPIO_B7_USED_INT 1
#  define GPIO_B7_USED_IN 0
#elif defined(CONFIG_STM32F411MINIMUM_GPIO_B7_IN)
#  define GPIO_B7_USED_OUT 0
#  define GPIO_B7_USED_INT 0
#  define GPIO_B7_USED_IN 1
#else
#  define GPIO_B7_USED_OUT 0
#  define GPIO_B7_USED_INT 0
#  define GPIO_B7_USED_IN 0
#endif

#if defined(CONFIG_STM32F411MINIMUM_GPIO_B7_OUT_PP)
#  define GPIO_B7_OUTTYPE GPIO_PUSHPULL
#else
#  define GPIO_B7_OUTTYPE GPIO_OPENDRAIN
#endif

#if defined(CONFIG_STM32F411MINIMUM_GPIO_B7_OUT_CLEAR)
#  define GPIO_B7_OUT_DEFAULT GPIO_OUTPUT_CLEAR
#else
#  define GPIO_B7_OUT_DEFAULT GPIO_OUTPUT_SET
#endif

#if defined(CONFIG_STM32F411MINIMUM_GPIO_B7_PULL_DOWN)
#  define GPIO_B7_PULL GPIO_PULLDOWN
#elif defined(CONFIG_STM32F411MINIMUM_GPIO_B7_PULL_FLOAT)
#  define GPIO_B7_PULL GPIO_FLOAT
#else
#  define GPIO_B7_PULL GPIO_PULLUP
#endif

#if defined(CONFIG_STM32F411MINIMUM_GPIO_B7_SPEED_2MHz)
#  define GPIO_B7_SPEED GPIO_SPEED_2MHz
#elif defined(CONFIG_STM32F411MINIMUM_GPIO_B7_SPEED_25MHz)
#  define GPIO_B7_SPEED GPIO_SPEED_25MHz
#else
#  define GPIO_B7_SPEED GPIO_SPEED_50MHz
#endif

/* GPIO B8 Kconfig Mapping */

#if defined(CONFIG_STM32F411MINIMUM_GPIO_B8_OUT)
#  define GPIO_B8_USED_OUT 1
#  define GPIO_B8_USED_INT 0
#  define GPIO_B8_USED_IN 0
#elif defined(CONFIG_STM32F411MINIMUM_GPIO_B8_INT)
#  define GPIO_B8_USED_OUT 0
#  define GPIO_B8_USED_INT 1
#  define GPIO_B8_USED_IN 0
#elif defined(CONFIG_STM32F411MINIMUM_GPIO_B8_IN)
#  define GPIO_B8_USED_OUT 0
#  define GPIO_B8_USED_INT 0
#  define GPIO_B8_USED_IN 1
#else
#  define GPIO_B8_USED_OUT 0
#  define GPIO_B8_USED_INT 0
#  define GPIO_B8_USED_IN 0
#endif

#if defined(CONFIG_STM32F411MINIMUM_GPIO_B8_OUT_PP)
#  define GPIO_B8_OUTTYPE GPIO_PUSHPULL
#else
#  define GPIO_B8_OUTTYPE GPIO_OPENDRAIN
#endif

#if defined(CONFIG_STM32F411MINIMUM_GPIO_B8_OUT_CLEAR)
#  define GPIO_B8_OUT_DEFAULT GPIO_OUTPUT_CLEAR
#else
#  define GPIO_B8_OUT_DEFAULT GPIO_OUTPUT_SET
#endif

#if defined(CONFIG_STM32F411MINIMUM_GPIO_B8_PULL_DOWN)
#  define GPIO_B8_PULL GPIO_PULLDOWN
#elif defined(CONFIG_STM32F411MINIMUM_GPIO_B8_PULL_FLOAT)
#  define GPIO_B8_PULL GPIO_FLOAT
#else
#  define GPIO_B8_PULL GPIO_PULLUP
#endif

#if defined(CONFIG_STM32F411MINIMUM_GPIO_B8_SPEED_2MHz)
#  define GPIO_B8_SPEED GPIO_SPEED_2MHz
#elif defined(CONFIG_STM32F411MINIMUM_GPIO_B8_SPEED_25MHz)
#  define GPIO_B8_SPEED GPIO_SPEED_25MHz
#else
#  define GPIO_B8_SPEED GPIO_SPEED_50MHz
#endif

/* GPIO B9 Kconfig Mapping */

#if defined(CONFIG_STM32F411MINIMUM_GPIO_B9_OUT)
#  define GPIO_B9_USED_OUT 1
#  define GPIO_B9_USED_INT 0
#  define GPIO_B9_USED_IN 0
#elif defined(CONFIG_STM32F411MINIMUM_GPIO_B9_INT)
#  define GPIO_B9_USED_OUT 0
#  define GPIO_B9_USED_INT 1
#  define GPIO_B9_USED_IN 0
#elif defined(CONFIG_STM32F411MINIMUM_GPIO_B9_IN)
#  define GPIO_B9_USED_OUT 0
#  define GPIO_B9_USED_INT 0
#  define GPIO_B9_USED_IN 1
#else
#  define GPIO_B9_USED_OUT 0
#  define GPIO_B9_USED_INT 0
#  define GPIO_B9_USED_IN 0
#endif

#if defined(CONFIG_STM32F411MINIMUM_GPIO_B9_OUT_PP)
#  define GPIO_B9_OUTTYPE GPIO_PUSHPULL
#else
#  define GPIO_B9_OUTTYPE GPIO_OPENDRAIN
#endif

#if defined(CONFIG_STM32F411MINIMUM_GPIO_B9_OUT_CLEAR)
#  define GPIO_B9_OUT_DEFAULT GPIO_OUTPUT_CLEAR
#else
#  define GPIO_B9_OUT_DEFAULT GPIO_OUTPUT_SET
#endif

#if defined(CONFIG_STM32F411MINIMUM_GPIO_B9_PULL_DOWN)
#  define GPIO_B9_PULL GPIO_PULLDOWN
#elif defined(CONFIG_STM32F411MINIMUM_GPIO_B9_PULL_FLOAT)
#  define GPIO_B9_PULL GPIO_FLOAT
#else
#  define GPIO_B9_PULL GPIO_PULLUP
#endif

#if defined(CONFIG_STM32F411MINIMUM_GPIO_B9_SPEED_2MHz)
#  define GPIO_B9_SPEED GPIO_SPEED_2MHz
#elif defined(CONFIG_STM32F411MINIMUM_GPIO_B9_SPEED_25MHz)
#  define GPIO_B9_SPEED GPIO_SPEED_25MHz
#else
#  define GPIO_B9_SPEED GPIO_SPEED_50MHz
#endif

/* GPIO B10 Kconfig Mapping */

#if defined(CONFIG_STM32F411MINIMUM_GPIO_B10_OUT)
#  define GPIO_B10_USED_OUT 1
#  define GPIO_B10_USED_INT 0
#  define GPIO_B10_USED_IN 0
#elif defined(CONFIG_STM32F411MINIMUM_GPIO_B10_INT)
#  define GPIO_B10_USED_OUT 0
#  define GPIO_B10_USED_INT 1
#  define GPIO_B10_USED_IN 0
#elif defined(CONFIG_STM32F411MINIMUM_GPIO_B10_IN)
#  define GPIO_B10_USED_OUT 0
#  define GPIO_B10_USED_INT 0
#  define GPIO_B10_USED_IN 1
#else
#  define GPIO_B10_USED_OUT 0
#  define GPIO_B10_USED_INT 0
#  define GPIO_B10_USED_IN 0
#endif

#if defined(CONFIG_STM32F411MINIMUM_GPIO_B10_OUT_PP)
#  define GPIO_B10_OUTTYPE GPIO_PUSHPULL
#else
#  define GPIO_B10_OUTTYPE GPIO_OPENDRAIN
#endif

#if defined(CONFIG_STM32F411MINIMUM_GPIO_B10_OUT_CLEAR)
#  define GPIO_B10_OUT_DEFAULT GPIO_OUTPUT_CLEAR
#else
#  define GPIO_B10_OUT_DEFAULT GPIO_OUTPUT_SET
#endif

#if defined(CONFIG_STM32F411MINIMUM_GPIO_B10_PULL_DOWN)
#  define GPIO_B10_PULL GPIO_PULLDOWN
#elif defined(CONFIG_STM32F411MINIMUM_GPIO_B10_PULL_FLOAT)
#  define GPIO_B10_PULL GPIO_FLOAT
#else
#  define GPIO_B10_PULL GPIO_PULLUP
#endif

#if defined(CONFIG_STM32F411MINIMUM_GPIO_B10_SPEED_2MHz)
#  define GPIO_B10_SPEED GPIO_SPEED_2MHz
#elif defined(CONFIG_STM32F411MINIMUM_GPIO_B10_SPEED_25MHz)
#  define GPIO_B10_SPEED GPIO_SPEED_25MHz
#else
#  define GPIO_B10_SPEED GPIO_SPEED_50MHz
#endif

/* GPIO B12 Kconfig Mapping */

#if defined(CONFIG_STM32F411MINIMUM_GPIO_B12_OUT)
#  define GPIO_B12_USED_OUT 1
#  define GPIO_B12_USED_INT 0
#  define GPIO_B12_USED_IN 0
#elif defined(CONFIG_STM32F411MINIMUM_GPIO_B12_INT)
#  define GPIO_B12_USED_OUT 0
#  define GPIO_B12_USED_INT 1
#  define GPIO_B12_USED_IN 0
#elif defined(CONFIG_STM32F411MINIMUM_GPIO_B12_IN)
#  define GPIO_B12_USED_OUT 0
#  define GPIO_B12_USED_INT 0
#  define GPIO_B12_USED_IN 1
#else
#  define GPIO_B12_USED_OUT 0
#  define GPIO_B12_USED_INT 0
#  define GPIO_B12_USED_IN 0
#endif

#if defined(CONFIG_STM32F411MINIMUM_GPIO_B12_OUT_PP)
#  define GPIO_B12_OUTTYPE GPIO_PUSHPULL
#else
#  define GPIO_B12_OUTTYPE GPIO_OPENDRAIN
#endif

#if defined(CONFIG_STM32F411MINIMUM_GPIO_B12_OUT_CLEAR)
#  define GPIO_B12_OUT_DEFAULT GPIO_OUTPUT_CLEAR
#else
#  define GPIO_B12_OUT_DEFAULT GPIO_OUTPUT_SET
#endif

#if defined(CONFIG_STM32F411MINIMUM_GPIO_B12_PULL_DOWN)
#  define GPIO_B12_PULL GPIO_PULLDOWN
#elif defined(CONFIG_STM32F411MINIMUM_GPIO_B12_PULL_FLOAT)
#  define GPIO_B12_PULL GPIO_FLOAT
#else
#  define GPIO_B12_PULL GPIO_PULLUP
#endif

#if defined(CONFIG_STM32F411MINIMUM_GPIO_B12_SPEED_2MHz)
#  define GPIO_B12_SPEED GPIO_SPEED_2MHz
#elif defined(CONFIG_STM32F411MINIMUM_GPIO_B12_SPEED_25MHz)
#  define GPIO_B12_SPEED GPIO_SPEED_25MHz
#else
#  define GPIO_B12_SPEED GPIO_SPEED_50MHz
#endif

/* GPIO B13 Kconfig Mapping */

#if defined(CONFIG_STM32F411MINIMUM_GPIO_B13_OUT)
#  define GPIO_B13_USED_OUT 1
#  define GPIO_B13_USED_INT 0
#  define GPIO_B13_USED_IN 0
#elif defined(CONFIG_STM32F411MINIMUM_GPIO_B13_INT)
#  define GPIO_B13_USED_OUT 0
#  define GPIO_B13_USED_INT 1
#  define GPIO_B13_USED_IN 0
#elif defined(CONFIG_STM32F411MINIMUM_GPIO_B13_IN)
#  define GPIO_B13_USED_OUT 0
#  define GPIO_B13_USED_INT 0
#  define GPIO_B13_USED_IN 1
#else
#  define GPIO_B13_USED_OUT 0
#  define GPIO_B13_USED_INT 0
#  define GPIO_B13_USED_IN 0
#endif

#if defined(CONFIG_STM32F411MINIMUM_GPIO_B13_OUT_PP)
#  define GPIO_B13_OUTTYPE GPIO_PUSHPULL
#else
#  define GPIO_B13_OUTTYPE GPIO_OPENDRAIN
#endif

#if defined(CONFIG_STM32F411MINIMUM_GPIO_B13_OUT_CLEAR)
#  define GPIO_B13_OUT_DEFAULT GPIO_OUTPUT_CLEAR
#else
#  define GPIO_B13_OUT_DEFAULT GPIO_OUTPUT_SET
#endif

#if defined(CONFIG_STM32F411MINIMUM_GPIO_B13_PULL_DOWN)
#  define GPIO_B13_PULL GPIO_PULLDOWN
#elif defined(CONFIG_STM32F411MINIMUM_GPIO_B13_PULL_FLOAT)
#  define GPIO_B13_PULL GPIO_FLOAT
#else
#  define GPIO_B13_PULL GPIO_PULLUP
#endif

#if defined(CONFIG_STM32F411MINIMUM_GPIO_B13_SPEED_2MHz)
#  define GPIO_B13_SPEED GPIO_SPEED_2MHz
#elif defined(CONFIG_STM32F411MINIMUM_GPIO_B13_SPEED_25MHz)
#  define GPIO_B13_SPEED GPIO_SPEED_25MHz
#else
#  define GPIO_B13_SPEED GPIO_SPEED_50MHz
#endif

/* GPIO B14 Kconfig Mapping */

#if defined(CONFIG_STM32F411MINIMUM_GPIO_B14_OUT)
#  define GPIO_B14_USED_OUT 1
#  define GPIO_B14_USED_INT 0
#  define GPIO_B14_USED_IN 0
#elif defined(CONFIG_STM32F411MINIMUM_GPIO_B14_INT)
#  define GPIO_B14_USED_OUT 0
#  define GPIO_B14_USED_INT 1
#  define GPIO_B14_USED_IN 0
#elif defined(CONFIG_STM32F411MINIMUM_GPIO_B14_IN)
#  define GPIO_B14_USED_OUT 0
#  define GPIO_B14_USED_INT 0
#  define GPIO_B14_USED_IN 1
#else
#  define GPIO_B14_USED_OUT 0
#  define GPIO_B14_USED_INT 0
#  define GPIO_B14_USED_IN 0
#endif

#if defined(CONFIG_STM32F411MINIMUM_GPIO_B14_OUT_PP)
#  define GPIO_B14_OUTTYPE GPIO_PUSHPULL
#else
#  define GPIO_B14_OUTTYPE GPIO_OPENDRAIN
#endif

#if defined(CONFIG_STM32F411MINIMUM_GPIO_B14_OUT_CLEAR)
#  define GPIO_B14_OUT_DEFAULT GPIO_OUTPUT_CLEAR
#else
#  define GPIO_B14_OUT_DEFAULT GPIO_OUTPUT_SET
#endif

#if defined(CONFIG_STM32F411MINIMUM_GPIO_B14_PULL_DOWN)
#  define GPIO_B14_PULL GPIO_PULLDOWN
#elif defined(CONFIG_STM32F411MINIMUM_GPIO_B14_PULL_FLOAT)
#  define GPIO_B14_PULL GPIO_FLOAT
#else
#  define GPIO_B14_PULL GPIO_PULLUP
#endif

#if defined(CONFIG_STM32F411MINIMUM_GPIO_B14_SPEED_2MHz)
#  define GPIO_B14_SPEED GPIO_SPEED_2MHz
#elif defined(CONFIG_STM32F411MINIMUM_GPIO_B14_SPEED_25MHz)
#  define GPIO_B14_SPEED GPIO_SPEED_25MHz
#else
#  define GPIO_B14_SPEED GPIO_SPEED_50MHz
#endif

/* GPIO B15 Kconfig Mapping */

#if defined(CONFIG_STM32F411MINIMUM_GPIO_B15_OUT)
#  define GPIO_B15_USED_OUT 1
#  define GPIO_B15_USED_INT 0
#  define GPIO_B15_USED_IN 0
#elif defined(CONFIG_STM32F411MINIMUM_GPIO_B15_INT)
#  define GPIO_B15_USED_OUT 0
#  define GPIO_B15_USED_INT 1
#  define GPIO_B15_USED_IN 0
#elif defined(CONFIG_STM32F411MINIMUM_GPIO_B15_IN)
#  define GPIO_B15_USED_OUT 0
#  define GPIO_B15_USED_INT 0
#  define GPIO_B15_USED_IN 1
#else
#  define GPIO_B15_USED_OUT 0
#  define GPIO_B15_USED_INT 0
#  define GPIO_B15_USED_IN 0
#endif

#if defined(CONFIG_STM32F411MINIMUM_GPIO_B15_OUT_PP)
#  define GPIO_B15_OUTTYPE GPIO_PUSHPULL
#else
#  define GPIO_B15_OUTTYPE GPIO_OPENDRAIN
#endif

#if defined(CONFIG_STM32F411MINIMUM_GPIO_B15_OUT_CLEAR)
#  define GPIO_B15_OUT_DEFAULT GPIO_OUTPUT_CLEAR
#else
#  define GPIO_B15_OUT_DEFAULT GPIO_OUTPUT_SET
#endif

#if defined(CONFIG_STM32F411MINIMUM_GPIO_B15_PULL_DOWN)
#  define GPIO_B15_PULL GPIO_PULLDOWN
#elif defined(CONFIG_STM32F411MINIMUM_GPIO_B15_PULL_FLOAT)
#  define GPIO_B15_PULL GPIO_FLOAT
#else
#  define GPIO_B15_PULL GPIO_PULLUP
#endif

#if defined(CONFIG_STM32F411MINIMUM_GPIO_B15_SPEED_2MHz)
#  define GPIO_B15_SPEED GPIO_SPEED_2MHz
#elif defined(CONFIG_STM32F411MINIMUM_GPIO_B15_SPEED_25MHz)
#  define GPIO_B15_SPEED GPIO_SPEED_25MHz
#else
#  define GPIO_B15_SPEED GPIO_SPEED_50MHz
#endif

/* GPIO C13 Kconfig Mapping */

#if defined(CONFIG_STM32F411MINIMUM_GPIO_C13_OUT)
#  define GPIO_C13_USED_OUT 1
#  define GPIO_C13_USED_INT 0
#  define GPIO_C13_USED_IN 0
#elif defined(CONFIG_STM32F411MINIMUM_GPIO_C13_INT)
#  define GPIO_C13_USED_OUT 0
#  define GPIO_C13_USED_INT 1
#  define GPIO_C13_USED_IN 0
#elif defined(CONFIG_STM32F411MINIMUM_GPIO_C13_IN)
#  define GPIO_C13_USED_OUT 0
#  define GPIO_C13_USED_INT 0
#  define GPIO_C13_USED_IN 1
#else
#  define GPIO_C13_USED_OUT 0
#  define GPIO_C13_USED_INT 0
#  define GPIO_C13_USED_IN 0
#endif

#if defined(CONFIG_STM32F411MINIMUM_GPIO_C13_OUT_PP)
#  define GPIO_C13_OUTTYPE GPIO_PUSHPULL
#else
#  define GPIO_C13_OUTTYPE GPIO_OPENDRAIN
#endif

#if defined(CONFIG_STM32F411MINIMUM_GPIO_C13_OUT_CLEAR)
#  define GPIO_C13_OUT_DEFAULT GPIO_OUTPUT_CLEAR
#else
#  define GPIO_C13_OUT_DEFAULT GPIO_OUTPUT_SET
#endif

#if defined(CONFIG_STM32F411MINIMUM_GPIO_C13_PULL_DOWN)
#  define GPIO_C13_PULL GPIO_PULLDOWN
#elif defined(CONFIG_STM32F411MINIMUM_GPIO_C13_PULL_FLOAT)
#  define GPIO_C13_PULL GPIO_FLOAT
#else
#  define GPIO_C13_PULL GPIO_PULLUP
#endif

#if defined(CONFIG_STM32F411MINIMUM_GPIO_C13_SPEED_2MHz)
#  define GPIO_C13_SPEED GPIO_SPEED_2MHz
#elif defined(CONFIG_STM32F411MINIMUM_GPIO_C13_SPEED_25MHz)
#  define GPIO_C13_SPEED GPIO_SPEED_25MHz
#else
#  define GPIO_C13_SPEED GPIO_SPEED_50MHz
#endif

/* GPIO C14 Kconfig Mapping */

#if defined(CONFIG_STM32F411MINIMUM_GPIO_C14_OUT)
#  define GPIO_C14_USED_OUT 1
#  define GPIO_C14_USED_INT 0
#  define GPIO_C14_USED_IN 0
#elif defined(CONFIG_STM32F411MINIMUM_GPIO_C14_INT)
#  define GPIO_C14_USED_OUT 0
#  define GPIO_C14_USED_INT 1
#  define GPIO_C14_USED_IN 0
#elif defined(CONFIG_STM32F411MINIMUM_GPIO_C14_IN)
#  define GPIO_C14_USED_OUT 0
#  define GPIO_C14_USED_INT 0
#  define GPIO_C14_USED_IN 1
#else
#  define GPIO_C14_USED_OUT 0
#  define GPIO_C14_USED_INT 0
#  define GPIO_C14_USED_IN 0
#endif

#if defined(CONFIG_STM32F411MINIMUM_GPIO_C14_OUT_PP)
#  define GPIO_C14_OUTTYPE GPIO_PUSHPULL
#else
#  define GPIO_C14_OUTTYPE GPIO_OPENDRAIN
#endif

#if defined(CONFIG_STM32F411MINIMUM_GPIO_C14_OUT_CLEAR)
#  define GPIO_C14_OUT_DEFAULT GPIO_OUTPUT_CLEAR
#else
#  define GPIO_C14_OUT_DEFAULT GPIO_OUTPUT_SET
#endif

#if defined(CONFIG_STM32F411MINIMUM_GPIO_C14_PULL_DOWN)
#  define GPIO_C14_PULL GPIO_PULLDOWN
#elif defined(CONFIG_STM32F411MINIMUM_GPIO_C14_PULL_FLOAT)
#  define GPIO_C14_PULL GPIO_FLOAT
#else
#  define GPIO_C14_PULL GPIO_PULLUP
#endif

#if defined(CONFIG_STM32F411MINIMUM_GPIO_C14_SPEED_2MHz)
#  define GPIO_C14_SPEED GPIO_SPEED_2MHz
#elif defined(CONFIG_STM32F411MINIMUM_GPIO_C14_SPEED_25MHz)
#  define GPIO_C14_SPEED GPIO_SPEED_25MHz
#else
#  define GPIO_C14_SPEED GPIO_SPEED_50MHz
#endif

/* GPIO C15 Kconfig Mapping */

#if defined(CONFIG_STM32F411MINIMUM_GPIO_C15_OUT)
#  define GPIO_C15_USED_OUT 1
#  define GPIO_C15_USED_INT 0
#  define GPIO_C15_USED_IN 0
#elif defined(CONFIG_STM32F411MINIMUM_GPIO_C15_INT)
#  define GPIO_C15_USED_OUT 0
#  define GPIO_C15_USED_INT 1
#  define GPIO_C15_USED_IN 0
#elif defined(CONFIG_STM32F411MINIMUM_GPIO_C15_IN)
#  define GPIO_C15_USED_OUT 0
#  define GPIO_C15_USED_INT 0
#  define GPIO_C15_USED_IN 1
#else
#  define GPIO_C15_USED_OUT 0
#  define GPIO_C15_USED_INT 0
#  define GPIO_C15_USED_IN 0
#endif

#if defined(CONFIG_STM32F411MINIMUM_GPIO_C15_OUT_PP)
#  define GPIO_C15_OUTTYPE GPIO_PUSHPULL
#else
#  define GPIO_C15_OUTTYPE GPIO_OPENDRAIN
#endif

#if defined(CONFIG_STM32F411MINIMUM_GPIO_C15_OUT_CLEAR)
#  define GPIO_C15_OUT_DEFAULT GPIO_OUTPUT_CLEAR
#else
#  define GPIO_C15_OUT_DEFAULT GPIO_OUTPUT_SET
#endif

#if defined(CONFIG_STM32F411MINIMUM_GPIO_C15_PULL_DOWN)
#  define GPIO_C15_PULL GPIO_PULLDOWN
#elif defined(CONFIG_STM32F411MINIMUM_GPIO_C15_PULL_FLOAT)
#  define GPIO_C15_PULL GPIO_FLOAT
#else
#  define GPIO_C15_PULL GPIO_PULLUP
#endif

#if defined(CONFIG_STM32F411MINIMUM_GPIO_C15_SPEED_2MHz)
#  define GPIO_C15_SPEED GPIO_SPEED_2MHz
#elif defined(CONFIG_STM32F411MINIMUM_GPIO_C15_SPEED_25MHz)
#  define GPIO_C15_SPEED GPIO_SPEED_25MHz
#else
#  define GPIO_C15_SPEED GPIO_SPEED_50MHz
#endif

/* GPIO_A0 definition */

#define GPIO_A0_OUT  (GPIO_OUTPUT|GPIO_A0_OUTTYPE|GPIO_A0_OUT_DEFAULT|\
                      GPIO_A0_PULL|GPIO_A0_SPEED|GPIO_PORTA|GPIO_PIN0)
#define GPIO_A0_IN   (GPIO_INPUT|GPIO_A0_PULL|GPIO_A0_SPEED|\
                      GPIO_PORTA|GPIO_PIN0)
#define GPIO_A0_INT  (GPIO_A0_IN|GPIO_EXTI)

/* GPIO_A1 definition */

#define GPIO_A1_OUT  (GPIO_OUTPUT|GPIO_A1_OUTTYPE|GPIO_A1_OUT_DEFAULT|\
                      GPIO_A1_PULL|GPIO_A1_SPEED|GPIO_PORTA|GPIO_PIN1)
#define GPIO_A1_IN   (GPIO_INPUT|GPIO_A1_PULL|GPIO_A1_SPEED|\
                      GPIO_PORTA|GPIO_PIN1)
#define GPIO_A1_INT  (GPIO_A1_IN|GPIO_EXTI)

/* GPIO_A2 definition */

#define GPIO_A2_OUT  (GPIO_OUTPUT|GPIO_A2_OUTTYPE|GPIO_A2_OUT_DEFAULT|\
                      GPIO_A2_PULL|GPIO_A2_SPEED|GPIO_PORTA|GPIO_PIN2)
#define GPIO_A2_IN   (GPIO_INPUT|GPIO_A2_PULL|GPIO_A2_SPEED|\
                      GPIO_PORTA|GPIO_PIN2)
#define GPIO_A2_INT  (GPIO_A2_IN|GPIO_EXTI)

/* GPIO_A3 definition */

#define GPIO_A3_OUT  (GPIO_OUTPUT|GPIO_A3_OUTTYPE|GPIO_A3_OUT_DEFAULT|\
                      GPIO_A3_PULL|GPIO_A3_SPEED|GPIO_PORTA|GPIO_PIN3)
#define GPIO_A3_IN   (GPIO_INPUT|GPIO_A3_PULL|GPIO_A3_SPEED|\
                      GPIO_PORTA|GPIO_PIN3)
#define GPIO_A3_INT  (GPIO_A3_IN|GPIO_EXTI)

/* GPIO_A4 definition */

#define GPIO_A4_OUT  (GPIO_OUTPUT|GPIO_A4_OUTTYPE|GPIO_A4_OUT_DEFAULT|\
                      GPIO_A4_PULL|GPIO_A4_SPEED|GPIO_PORTA|GPIO_PIN4)
#define GPIO_A4_IN   (GPIO_INPUT|GPIO_A4_PULL|GPIO_A4_SPEED|\
                      GPIO_PORTA|GPIO_PIN4)
#define GPIO_A4_INT  (GPIO_A4_IN|GPIO_EXTI)

/* GPIO_A5 definition */

#define GPIO_A5_OUT  (GPIO_OUTPUT|GPIO_A5_OUTTYPE|GPIO_A5_OUT_DEFAULT|\
                      GPIO_A5_PULL|GPIO_A5_SPEED|GPIO_PORTA|GPIO_PIN5)
#define GPIO_A5_IN   (GPIO_INPUT|GPIO_A5_PULL|GPIO_A5_SPEED|\
                      GPIO_PORTA|GPIO_PIN5)
#define GPIO_A5_INT  (GPIO_A5_IN|GPIO_EXTI)

/* GPIO_A6 definition */

#define GPIO_A6_OUT  (GPIO_OUTPUT|GPIO_A6_OUTTYPE|GPIO_A6_OUT_DEFAULT|\
                      GPIO_A6_PULL|GPIO_A6_SPEED|GPIO_PORTA|GPIO_PIN6)
#define GPIO_A6_IN   (GPIO_INPUT|GPIO_A6_PULL|GPIO_A6_SPEED|\
                      GPIO_PORTA|GPIO_PIN6)
#define GPIO_A6_INT  (GPIO_A6_IN|GPIO_EXTI)

/* GPIO_A7 definition */

#define GPIO_A7_OUT  (GPIO_OUTPUT|GPIO_A7_OUTTYPE|GPIO_A7_OUT_DEFAULT|\
                      GPIO_A7_PULL|GPIO_A7_SPEED|GPIO_PORTA|GPIO_PIN7)
#define GPIO_A7_IN   (GPIO_INPUT|GPIO_A7_PULL|GPIO_A7_SPEED|\
                      GPIO_PORTA|GPIO_PIN7)
#define GPIO_A7_INT  (GPIO_A7_IN|GPIO_EXTI)

/* GPIO_A8 definition */

#define GPIO_A8_OUT  (GPIO_OUTPUT|GPIO_A8_OUTTYPE|GPIO_A8_OUT_DEFAULT|\
                      GPIO_A8_PULL|GPIO_A8_SPEED|GPIO_PORTA|GPIO_PIN8)
#define GPIO_A8_IN   (GPIO_INPUT|GPIO_A8_PULL|GPIO_A8_SPEED|\
                      GPIO_PORTA|GPIO_PIN8)
#define GPIO_A8_INT  (GPIO_A8_IN|GPIO_EXTI)

/* GPIO_A9 definition */

#define GPIO_A9_OUT  (GPIO_OUTPUT|GPIO_A9_OUTTYPE|GPIO_A9_OUT_DEFAULT|\
                      GPIO_A9_PULL|GPIO_A9_SPEED|GPIO_PORTA|GPIO_PIN9)
#define GPIO_A9_IN   (GPIO_INPUT|GPIO_A9_PULL|GPIO_A9_SPEED|\
                      GPIO_PORTA|GPIO_PIN9)
#define GPIO_A9_INT  (GPIO_A9_IN|GPIO_EXTI)

/* GPIO_A10 definition */

#define GPIO_A10_OUT (GPIO_OUTPUT|GPIO_A10_OUTTYPE|GPIO_A10_OUT_DEFAULT|\
                      GPIO_A10_PULL|GPIO_A10_SPEED|GPIO_PORTA|GPIO_PIN10)
#define GPIO_A10_IN  (GPIO_INPUT|GPIO_A10_PULL|GPIO_A10_SPEED|\
                      GPIO_PORTA|GPIO_PIN10)
#define GPIO_A10_INT (GPIO_A10_IN|GPIO_EXTI)

/* GPIO_A11 definition */

#define GPIO_A11_OUT (GPIO_OUTPUT|GPIO_A11_OUTTYPE|GPIO_A11_OUT_DEFAULT|\
                      GPIO_A11_PULL|GPIO_A11_SPEED|GPIO_PORTA|GPIO_PIN11)
#define GPIO_A11_IN  (GPIO_INPUT|GPIO_A11_PULL|GPIO_A11_SPEED|\
                      GPIO_PORTA|GPIO_PIN11)
#define GPIO_A11_INT (GPIO_A11_IN|GPIO_EXTI)

/* GPIO_A12 definition */

#define GPIO_A12_OUT (GPIO_OUTPUT|GPIO_A12_OUTTYPE|GPIO_A12_OUT_DEFAULT|\
                      GPIO_A12_PULL|GPIO_A12_SPEED|GPIO_PORTA|GPIO_PIN12)
#define GPIO_A12_IN  (GPIO_INPUT|GPIO_A12_PULL|GPIO_A12_SPEED|\
                      GPIO_PORTA|GPIO_PIN12)
#define GPIO_A12_INT (GPIO_A12_IN|GPIO_EXTI)

/* GPIO_A15 definition */

#define GPIO_A15_OUT (GPIO_OUTPUT|GPIO_A15_OUTTYPE|GPIO_A15_OUT_DEFAULT|\
                      GPIO_A15_PULL|GPIO_A15_SPEED|GPIO_PORTA|GPIO_PIN15)
#define GPIO_A15_IN  (GPIO_INPUT|GPIO_A15_PULL|GPIO_A15_SPEED|\
                      GPIO_PORTA|GPIO_PIN15)
#define GPIO_A15_INT (GPIO_A15_IN|GPIO_EXTI)

/* GPIO_B0 definition */

#define GPIO_B0_OUT  (GPIO_OUTPUT|GPIO_B0_OUTTYPE|GPIO_B0_OUT_DEFAULT|\
                      GPIO_B0_PULL|GPIO_B0_SPEED|GPIO_PORTB|GPIO_PIN0)
#define GPIO_B0_IN   (GPIO_INPUT|GPIO_B0_PULL|GPIO_B0_SPEED|\
                      GPIO_PORTB|GPIO_PIN0)
#define GPIO_B0_INT  (GPIO_B0_IN|GPIO_EXTI)

/* GPIO_B1 definition */

#define GPIO_B1_OUT  (GPIO_OUTPUT|GPIO_B1_OUTTYPE|GPIO_B1_OUT_DEFAULT|\
                      GPIO_B1_PULL|GPIO_B1_SPEED|GPIO_PORTB|GPIO_PIN1)
#define GPIO_B1_IN   (GPIO_INPUT|GPIO_B1_PULL|GPIO_B1_SPEED|\
                      GPIO_PORTB|GPIO_PIN1)
#define GPIO_B1_INT  (GPIO_B1_IN|GPIO_EXTI)

/* GPIO_B2 definition */

#define GPIO_B2_OUT  (GPIO_OUTPUT|GPIO_B2_OUTTYPE|GPIO_B2_OUT_DEFAULT|\
                      GPIO_B2_PULL|GPIO_B2_SPEED|GPIO_PORTB|GPIO_PIN2)
#define GPIO_B2_IN   (GPIO_INPUT|GPIO_B2_PULL|GPIO_B2_SPEED|\
                      GPIO_PORTB|GPIO_PIN2)
#define GPIO_B2_INT  (GPIO_B2_IN|GPIO_EXTI)

/* GPIO_B3 definition */

#define GPIO_B3_OUT  (GPIO_OUTPUT|GPIO_B3_OUTTYPE|GPIO_B3_OUT_DEFAULT|\
                      GPIO_B3_PULL|GPIO_B3_SPEED|GPIO_PORTB|GPIO_PIN3)
#define GPIO_B3_IN   (GPIO_INPUT|GPIO_B3_PULL|GPIO_B3_SPEED|\
                      GPIO_PORTB|GPIO_PIN3)
#define GPIO_B3_INT  (GPIO_B3_IN|GPIO_EXTI)

/* GPIO_B4 definition */

#define GPIO_B4_OUT  (GPIO_OUTPUT|GPIO_B4_OUTTYPE|GPIO_B4_OUT_DEFAULT|\
                      GPIO_B4_PULL|GPIO_B4_SPEED|GPIO_PORTB|GPIO_PIN4)
#define GPIO_B4_IN   (GPIO_INPUT|GPIO_B4_PULL|GPIO_B4_SPEED|\
                      GPIO_PORTB|GPIO_PIN4)
#define GPIO_B4_INT  (GPIO_B4_IN|GPIO_EXTI)

/* GPIO_B5 definition */

#define GPIO_B5_OUT  (GPIO_OUTPUT|GPIO_B5_OUTTYPE|GPIO_B5_OUT_DEFAULT|\
                      GPIO_B5_PULL|GPIO_B5_SPEED|GPIO_PORTB|GPIO_PIN5)
#define GPIO_B5_IN   (GPIO_INPUT|GPIO_B5_PULL|GPIO_B5_SPEED|\
                      GPIO_PORTB|GPIO_PIN5)
#define GPIO_B5_INT  (GPIO_B5_IN|GPIO_EXTI)

/* GPIO_B6 definition */

#define GPIO_B6_OUT  (GPIO_OUTPUT|GPIO_B6_OUTTYPE|GPIO_B6_OUT_DEFAULT|\
                      GPIO_B6_PULL|GPIO_B6_SPEED|GPIO_PORTB|GPIO_PIN6)
#define GPIO_B6_IN   (GPIO_INPUT|GPIO_B6_PULL|GPIO_B6_SPEED|\
                      GPIO_PORTB|GPIO_PIN6)
#define GPIO_B6_INT  (GPIO_B6_IN|GPIO_EXTI)

/* GPIO_B7 definition */

#define GPIO_B7_OUT  (GPIO_OUTPUT|GPIO_B7_OUTTYPE|GPIO_B7_OUT_DEFAULT|\
                      GPIO_B7_PULL|GPIO_B7_SPEED|GPIO_PORTB|GPIO_PIN7)
#define GPIO_B7_IN   (GPIO_INPUT|GPIO_B7_PULL|GPIO_B7_SPEED|\
                      GPIO_PORTB|GPIO_PIN7)
#define GPIO_B7_INT  (GPIO_B7_IN|GPIO_EXTI)

/* GPIO_B8 definition */

#define GPIO_B8_OUT  (GPIO_OUTPUT|GPIO_B8_OUTTYPE|GPIO_B8_OUT_DEFAULT|\
                      GPIO_B8_PULL|GPIO_B8_SPEED|GPIO_PORTB|GPIO_PIN8)
#define GPIO_B8_IN   (GPIO_INPUT|GPIO_B8_PULL|GPIO_B8_SPEED|\
                      GPIO_PORTB|GPIO_PIN8)
#define GPIO_B8_INT  (GPIO_B8_IN|GPIO_EXTI)

/* GPIO_B9 definition */

#define GPIO_B9_OUT  (GPIO_OUTPUT|GPIO_B9_OUTTYPE|GPIO_B9_OUT_DEFAULT|\
                      GPIO_B9_PULL|GPIO_B9_SPEED|GPIO_PORTB|GPIO_PIN9)
#define GPIO_B9_IN   (GPIO_INPUT|GPIO_B9_PULL|GPIO_B9_SPEED|\
                      GPIO_PORTB|GPIO_PIN9)
#define GPIO_B9_INT  (GPIO_B9_IN|GPIO_EXTI)

/* GPIO_B10 definition */

#define GPIO_B10_OUT (GPIO_OUTPUT|GPIO_B10_OUTTYPE|GPIO_B10_OUT_DEFAULT|\
                      GPIO_B10_PULL|GPIO_B10_SPEED|GPIO_PORTB|GPIO_PIN10)
#define GPIO_B10_IN  (GPIO_INPUT|GPIO_B10_PULL|GPIO_B10_SPEED|\
                      GPIO_PORTB|GPIO_PIN10)
#define GPIO_B10_INT (GPIO_B10_IN|GPIO_EXTI)

/* GPIO_B12 definition */

#define GPIO_B12_OUT (GPIO_OUTPUT|GPIO_B12_OUTTYPE|GPIO_B12_OUT_DEFAULT|\
                      GPIO_B12_PULL|GPIO_B12_SPEED|GPIO_PORTB|GPIO_PIN12)
#define GPIO_B12_IN  (GPIO_INPUT|GPIO_B12_PULL|GPIO_B12_SPEED|\
                      GPIO_PORTB|GPIO_PIN12)
#define GPIO_B12_INT (GPIO_B12_IN|GPIO_EXTI)

/* GPIO_B13 definition */

#define GPIO_B13_OUT (GPIO_OUTPUT|GPIO_B13_OUTTYPE|GPIO_B13_OUT_DEFAULT|\
                      GPIO_B13_PULL|GPIO_B13_SPEED|GPIO_PORTB|GPIO_PIN13)
#define GPIO_B13_IN  (GPIO_INPUT|GPIO_B13_PULL|GPIO_B13_SPEED|\
                      GPIO_PORTB|GPIO_PIN13)
#define GPIO_B13_INT (GPIO_B13_IN|GPIO_EXTI)

/* GPIO_B14 definition */

#define GPIO_B14_OUT (GPIO_OUTPUT|GPIO_B14_OUTTYPE|GPIO_B14_OUT_DEFAULT|\
                      GPIO_B14_PULL|GPIO_B14_SPEED|GPIO_PORTB|GPIO_PIN14)
#define GPIO_B14_IN  (GPIO_INPUT|GPIO_B14_PULL|GPIO_B14_SPEED|\
                      GPIO_PORTB|GPIO_PIN14)
#define GPIO_B14_INT (GPIO_B14_IN|GPIO_EXTI)

/* GPIO_B15 definition */

#define GPIO_B15_OUT (GPIO_OUTPUT|GPIO_B15_OUTTYPE|GPIO_B15_OUT_DEFAULT|\
                      GPIO_B15_PULL|GPIO_B15_SPEED|GPIO_PORTB|GPIO_PIN15)
#define GPIO_B15_IN  (GPIO_INPUT|GPIO_B15_PULL|GPIO_B15_SPEED|\
                      GPIO_PORTB|GPIO_PIN15)
#define GPIO_B15_INT (GPIO_B15_IN|GPIO_EXTI)

/* GPIO_C13 definition */

#define GPIO_C13_OUT (GPIO_OUTPUT|GPIO_C13_OUTTYPE|GPIO_C13_OUT_DEFAULT|\
                      GPIO_C13_PULL|GPIO_C13_SPEED|GPIO_PORTC|GPIO_PIN13)
#define GPIO_C13_IN  (GPIO_INPUT|GPIO_C13_PULL|GPIO_C13_SPEED|\
                      GPIO_PORTC|GPIO_PIN13)
#define GPIO_C13_INT (GPIO_C13_IN|GPIO_EXTI)

/* GPIO_C14 definition */

#define GPIO_C14_OUT (GPIO_OUTPUT|GPIO_C14_OUTTYPE|GPIO_C14_OUT_DEFAULT|\
                      GPIO_C14_PULL|GPIO_C14_SPEED|GPIO_PORTC|GPIO_PIN14)
#define GPIO_C14_IN  (GPIO_INPUT|GPIO_C14_PULL|GPIO_C14_SPEED|\
                      GPIO_PORTC|GPIO_PIN14)
#define GPIO_C14_INT (GPIO_C14_IN|GPIO_EXTI)

/* GPIO_C15 definition */

#define GPIO_C15_OUT (GPIO_OUTPUT|GPIO_C15_OUTTYPE|GPIO_C15_OUT_DEFAULT|\
                      GPIO_C15_PULL|GPIO_C15_SPEED|GPIO_PORTC|GPIO_PIN15)
#define GPIO_C15_IN  (GPIO_INPUT|GPIO_C15_PULL|GPIO_C15_SPEED|\
                      GPIO_PORTC|GPIO_PIN15)
#define GPIO_C15_INT (GPIO_C15_IN|GPIO_EXTI)

#define BOARD_NGPIO_OUT \
  GPIO_A0_USED_OUT + \
  GPIO_A1_USED_OUT + \
  GPIO_A2_USED_OUT + \
  GPIO_A3_USED_OUT + \
  GPIO_A4_USED_OUT + \
  GPIO_A5_USED_OUT + \
  GPIO_A6_USED_OUT + \
  GPIO_A7_USED_OUT + \
  GPIO_A8_USED_OUT + \
  GPIO_A9_USED_OUT + \
  GPIO_A10_USED_OUT + \
  GPIO_A11_USED_OUT + \
  GPIO_A12_USED_OUT + \
  GPIO_A15_USED_OUT + \
  GPIO_B0_USED_OUT + \
  GPIO_B1_USED_OUT + \
  GPIO_B2_USED_OUT + \
  GPIO_B3_USED_OUT + \
  GPIO_B4_USED_OUT + \
  GPIO_B5_USED_OUT + \
  GPIO_B6_USED_OUT + \
  GPIO_B7_USED_OUT + \
  GPIO_B8_USED_OUT + \
  GPIO_B9_USED_OUT + \
  GPIO_B10_USED_OUT + \
  GPIO_B12_USED_OUT + \
  GPIO_B13_USED_OUT + \
  GPIO_B14_USED_OUT + \
  GPIO_B15_USED_OUT + \
  GPIO_C13_USED_OUT + \
  GPIO_C14_USED_OUT + \
  GPIO_C15_USED_OUT

#define BOARD_NGPIO_IN \
  GPIO_A0_USED_IN + \
  GPIO_A1_USED_IN + \
  GPIO_A2_USED_IN + \
  GPIO_A3_USED_IN + \
  GPIO_A4_USED_IN + \
  GPIO_A5_USED_IN + \
  GPIO_A6_USED_IN + \
  GPIO_A7_USED_IN + \
  GPIO_A8_USED_IN + \
  GPIO_A9_USED_IN + \
  GPIO_A10_USED_IN + \
  GPIO_A11_USED_IN + \
  GPIO_A12_USED_IN + \
  GPIO_A15_USED_IN + \
  GPIO_B0_USED_IN + \
  GPIO_B1_USED_IN + \
  GPIO_B2_USED_IN + \
  GPIO_B3_USED_IN + \
  GPIO_B4_USED_IN + \
  GPIO_B5_USED_IN + \
  GPIO_B6_USED_IN + \
  GPIO_B7_USED_IN + \
  GPIO_B8_USED_IN + \
  GPIO_B9_USED_IN + \
  GPIO_B10_USED_IN + \
  GPIO_B12_USED_IN + \
  GPIO_B13_USED_IN + \
  GPIO_B14_USED_IN + \
  GPIO_B15_USED_IN + \
  GPIO_C13_USED_IN + \
  GPIO_C14_USED_IN + \
  GPIO_C15_USED_IN

#define BOARD_NGPIO_INT \
  GPIO_A0_USED_INT + \
  GPIO_A1_USED_INT + \
  GPIO_A2_USED_INT + \
  GPIO_A3_USED_INT + \
  GPIO_A4_USED_INT + \
  GPIO_A5_USED_INT + \
  GPIO_A6_USED_INT + \
  GPIO_A7_USED_INT + \
  GPIO_A8_USED_INT + \
  GPIO_A9_USED_INT + \
  GPIO_A10_USED_INT + \
  GPIO_A11_USED_INT + \
  GPIO_A12_USED_INT + \
  GPIO_A15_USED_INT + \
  GPIO_B0_USED_INT + \
  GPIO_B1_USED_INT + \
  GPIO_B2_USED_INT + \
  GPIO_B3_USED_INT + \
  GPIO_B4_USED_INT + \
  GPIO_B5_USED_INT + \
  GPIO_B6_USED_INT + \
  GPIO_B7_USED_INT + \
  GPIO_B8_USED_INT + \
  GPIO_B9_USED_INT + \
  GPIO_B10_USED_INT + \
  GPIO_B12_USED_INT + \
  GPIO_B13_USED_INT + \
  GPIO_B14_USED_INT + \
  GPIO_B15_USED_INT + \
  GPIO_C13_USED_INT + \
  GPIO_C14_USED_INT + \
  GPIO_C15_USED_INT

#if BOARD_NGPIO_INT > CONFIG_DEV_GPIO_NSIGNALS
#  error You have enabled more interrupts than supported, adjust CONFIG_DEV_GPIO_NSIGNALS to support them all
#endif

#endif /* __BOARDS_ARM_STM32_STM32F411_MINIMUM_SRC_STM32F411_MINIMUM_GPIO_H */
